<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>sys-build-base - Layer Documentation</title>
    <style>
        body { font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif; max-width: 1200px; margin: 0 auto; padding: 20px; line-height: 1.6; }
        .header { border-bottom: 2px solid #eee; padding-bottom: 20px; margin-bottom: 30px; }
        .section { margin-bottom: 30px; }
        .badge { display: inline-block; background: #007acc; color: white; padding: 2px 8px; border-radius: 3px; font-size: 12px; margin-right: 10px; }
        .policy-immediate { background: #28a745; color: white; text-decoration: none; }
        .policy-lazy { background: #ffc107; color: #212529; text-decoration: none; }
        .policy-force { background: #dc3545; color: white; text-decoration: none; }
        .policy-skip { background: #6c757d; color: white; text-decoration: none; }
        .policy-immediate:hover { background: #1e7e34; }
        .policy-lazy:hover { background: #e0a800; }
        .policy-force:hover { background: #c82333; }
        .policy-skip:hover { background: #545b62; }
        table { width: 100%; border-collapse: collapse; margin-top: 10px; table-layout: auto; }
        th, td { text-align: left; padding: 8px 12px; border-bottom: 1px solid #ddd; }
        th { background: #f8f9fa; font-weight: 600; }
        td:nth-child(3) {
            width: auto;
        }
        code { background: #f1f3f4; padding: 2px 4px; border-radius: 3px; font-family: 'Monaco', monospace; font-size: 14px; }
        code.long-default { word-break: break-all; white-space: pre-wrap; display: block; min-width: 30ch; }
        .back-link { margin-bottom: 20px; }
        .back-link a { text-decoration: none; color: #007acc; }
        .deps { display: flex; flex-wrap: wrap; gap: 5px; }
        .dep-badge { background: #28a745; color: white; padding: 2px 6px; border-radius: 3px; font-size: 11px; text-decoration: none; }
        .dep-badge:hover { background: #1e7e34; }
        /* Main content headers styling */
        h1, h2, h3, h4, h5, h6 { color: #333; margin-top: 20px; margin-bottom: 10px; }
        /* Companion documentation content styling */
        .companion-content h1, .companion-content h2, .companion-content h3, .companion-content h4, .companion-content h5, .companion-content h6 { color: #333; margin-top: 20px; margin-bottom: 10px; }
        .companion-content p { margin: 10px 0; }
        .companion-content ul, .companion-content ol { margin: 10px 0; padding-left: 30px; }
        .companion-content blockquote { border-left: 4px solid #007acc; padding-left: 15px; margin: 15px 0; color: #666; background: #f8f9fa; padding: 10px 15px; }
        .companion-content pre { background: #f8f9fa; padding: 15px; border-radius: 5px; overflow-x: auto; border-left: 4px solid #007acc; }
        .companion-content table { border: 1px solid #ddd; }
        .companion-content th, .companion-content td { border: 1px solid #ddd; }

        /* AsciiDoc admonition blocks (NOTE, TIP, WARNING, etc.) */
        .admonitionblock {
            margin: 1.5em 0;
            padding: 0.4em 0.6em;
            border-left: 4px solid;
            background: #f8f9fa;
            border-radius: 0 4px 4px 0;
        }

        .admonitionblock .title {
            font-weight: bold;
            text-transform: uppercase;
            font-size: 0.85em;
            margin-bottom: 0.25em;
            letter-spacing: 0.5px;
        }

        .admonitionblock .content {
            margin: 0;
        }

        /* Reduce spacing for paragraphs inside admonitions */
        .admonitionblock p {
            margin: 0.25em 0;
        }

        .admonitionblock p:first-child {
            margin-top: 0;
        }

        .admonitionblock p:last-child {
            margin-bottom: 0;
        }

        /* Specific admonition types */
        .admonitionblock.note {
            border-color: #17a2b8;
            background: #d1ecf1;
        }

        .admonitionblock.note .title {
            color: #0c5460;
        }

        .admonitionblock.tip {
            border-color: #28a745;
            background: #d4edda;
        }

        .admonitionblock.tip .title {
            color: #155724;
        }

        .admonitionblock.important {
            border-color: #ffc107;
            background: #fff3cd;
        }

        .admonitionblock.important .title {
            color: #856404;
        }

        .admonitionblock.warning,
        .admonitionblock.caution {
            border-color: #dc3545;
            background: #f8d7da;
        }

        .admonitionblock.warning .title,
        .admonitionblock.caution .title {
            color: #721c24;
        }
    </style>
</head>
<body>
    <div class="back-link">
        <a href="index.html">← Back to Layer Index</a>
    </div>

    <div class="header">
        <h1>sys-build-base</h1>
        <span class="badge">build</span>
        <span class="badge">v1.0.0</span>
        <p>Build environment configuration including workspace, apt
 settings, and system foundation defaults.</p>
    </div>

    

    
    <div class="section">
        <h2>Relationships</h2>
        
        
        <p><strong>Required by:</strong></p>
        <div class="deps">
            
            <a href="deploy-base.html" class="dep-badge">deploy-base</a>
            
            <a href="docker-debian-bookworm.html" class="dep-badge">docker-debian-bookworm</a>
            
            <a href="docker-debian-trixie.html" class="dep-badge">docker-debian-trixie</a>
            
            <a href="essential.html" class="dep-badge">essential</a>
            
            <a href="image-base.html" class="dep-badge">image-base</a>
            
            <a href="target-config.html" class="dep-badge">target-config</a>
            
        </div>
        
        
        
    </div>
    

    
    <div class="section">
        <h2>Configuration Variables</h2>
        
        
        <p><strong>Declares</strong> (prefix: <code>sys</code>):</p>
        <table>
            <thead>
                <tr>
                    <th>Variable</th>
                    <th>Description</th>
                    <th>Default</th>
                    <th>Validation</th>
                    <th>Policy</th>
                </tr>
            </thead>
            <tbody>
                
                <tr>
                    <td><code>IGconf_sys_apt_proxy</code></td>
                    <td>APT Proxy URL
 If you require the use of an APT HTTP proxy, set it using this. The proxy
 setting will not be included in the image, making it safe to use an
 `apt-cacher` or similar package for development.</td>
                    <td>
                       
                           <code>&lt;disabled&gt;</code>
                       
                    </td>
                    <td>Must match regex pattern: (https?|ftp)://[^:/\s]+:\d+[^\s]*</td>
                    <td>
                        <a href="variable-validation.html#set-policies" class="badge policy-skip" title="Click for policy and validation help">skip</a>
                    </td>
                </tr>
                
                <tr>
                    <td><code>IGconf_sys_apt_get_purge</code></td>
                    <td>Purge APT operations in the chroot by default.
 Refer to apt-get(8).</td>
                    <td>
                       
                           
                           <code>y</code>
                           
                       
                    </td>
                    <td>Boolean value - accepts: true/false, 1/0, yes/no, y/n (case insensitive)</td>
                    <td>
                        <a href="variable-validation.html#set-policies" class="badge policy-immediate" title="Click for policy and validation help">immediate</a>
                    </td>
                </tr>
                
                <tr>
                    <td><code>IGconf_sys_apt_keydir</code></td>
                    <td>APT key directory
 If a particular collection of keys are required for bdebstrap to download
 packages from the mirror(s) provided, set the directory containing them here.
 This will be passed to bdebstrap via aptopt Dir::Etc::TrustedParts. If not
 specified, rpi-image-gen sets this directory and assembles the keys it
 requires into it.
 This particular setting of Dir::Etc::TrustedParts will not be included in the
 image. If using this option, please make sure to install your key(s) into the
 chroot explicitly if a key contained in this directory points to a location
 that is not otherwise populated during chroot creation (for example by
 installing a keyring package).</td>
                    <td>
                       
                           <code>&lt;empty&gt;</code>
                       
                    </td>
                    <td>String value (may be empty)</td>
                    <td>
                        <a href="variable-validation.html#set-policies" class="badge policy-immediate" title="Click for policy and validation help">immediate</a>
                    </td>
                </tr>
                
                <tr>
                    <td><code>IGconf_sys_workroot</code></td>
                    <td>The root work directory. Depending on the system(s)
 being built, this directory can amount to a substantial amount of consumed
 disk space.</td>
                    <td>
                       
                           
                           <code class="long-default">$(realpath --canonicalize-missing ./work)</code>
                           
                       
                    </td>
                    <td>Non-empty string value</td>
                    <td>
                        <a href="variable-validation.html#set-policies" class="badge policy-immediate" title="Click for policy and validation help">immediate</a>
                    </td>
                </tr>
                
                <tr>
                    <td><code>IGconf_sys_cachedir</code></td>
                    <td>Global cache root directory for all operations.</td>
                    <td>
                       
                           
                           <code class="long-default">${IGconf_sys_workroot}/cache</code>
                           
                       
                    </td>
                    <td>Non-empty string value</td>
                    <td>
                        <a href="variable-validation.html#set-policies" class="badge policy-immediate" title="Click for policy and validation help">immediate</a>
                    </td>
                </tr>
                
                <tr>
                    <td><code>IGconf_sys_apt_cachedir</code></td>
                    <td>Cache directory for APT operations.
 Use this to specify the root directory APT uses when downloading packages.
 APT will re-use packages from this directory where possible, meaning that
 usage of this directory can decrease build time.
 By default, the cache dir resides in the chroot and is cleaned up
 automatically upon build completion.
 This is currently an experimental feature requiring some manual involvement.</td>
                    <td>
                       
                           <code>&lt;empty&gt;</code>
                       
                    </td>
                    <td>String value (may be empty)</td>
                    <td>
                        <a href="variable-validation.html#set-policies" class="badge policy-force" title="Click for policy and validation help">force</a>
                    </td>
                </tr>
                
                <tr>
                    <td><code>IGconf_sys_buildroot</code></td>
                    <td>Global build root directory for source builds.</td>
                    <td>
                       
                           
                           <code class="long-default">${IGconf_sys_workroot}/build</code>
                           
                       
                    </td>
                    <td>Non-empty string value</td>
                    <td>
                        <a href="variable-validation.html#set-policies" class="badge policy-immediate" title="Click for policy and validation help">immediate</a>
                    </td>
                </tr>
                
                <tr>
                    <td><code>IGconf_sys_bootstrapdir</code></td>
                    <td>Directory for bootstrap artefacts (e.g. env, layer
 order, metadata) used to resume the build in a containerised (or later)
 invocation.</td>
                    <td>
                       
                           
                           <code class="long-default">${IGconf_sys_workroot}/bootstrap</code>
                           
                       
                    </td>
                    <td>Non-empty string value</td>
                    <td>
                        <a href="variable-validation.html#set-policies" class="badge policy-immediate" title="Click for policy and validation help">immediate</a>
                    </td>
                </tr>
                
            </tbody>
        </table>
        
    </div>
    

    

    <div class="section">
        <h2>Attributes</h2>
        <p><strong>File:</strong> <code>base/sys-build-base.yaml</code></p>
        
    </div>
</body>
</html>